package edu.gduf.dao;

import edu.gduf.domain.Associations;
import edu.gduf.domain.LikeLog;
import edu.gduf.domain.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface UserDao {

    Integer addUser(User user); // 用于用户注册1
    Integer addAssociation(User user);// 用于用户注册2
    User findUser(User user); // 用户登陆

    /**
     * 查询用户名在数据库中是否已存在
     * @param uesrname
     * @return
     */
    String checkUserName(String uesrname);

    /**
     * 查询学号是否在数据库中已存在
     * @param xh
     * @return
     */
    String checkXh(String xh);

    /**
     * 通过用户的uid查询用户信息
     * @param uid
     * @return
     */
    User findUserByUid(Integer uid);

    /**
     * 通过组织的uid获取组织信息
     * @param uid
     * @return
     */
    Associations findAssociationByUid(Integer uid);

    /**
     * 通过用户名获取用户的信息（用于登陆,授权）
     * @param username
     * @return
     */
    User findUserByUsername(String username);

    /**
     * 通过uid返回用户昵称
     * @param uid
     * @return
     */
    String findNicknameByUid(Integer uid);

    List<User> selectAllUser(); // 显示所有用户
    List<User> selectAllAssociation(); // 显示所有组织
    Integer lockUser(Integer uid); // 锁定用户
    Integer unlockUser(Integer uid); // 解锁用户

    /**
     * 用户更新用户信息（所有字段）
     * @param user
     * @return
     */
    Integer updateUserAll(User user);

    /**
     * 用户更新用户信息（限定字段）
     * @param user
     * @return
     */
    Integer updateUser(User user);
    Integer updateAssociation(Associations association);
    /**
     * 点赞的数据库操作
     * @param uid
     * @return
     */
    Integer like(Integer uid);

    /**
     * 加入点赞记录
     * @param like
     * @return
     */
    Integer addLikeLog(LikeLog like);


}
